/**
 + * Converts any Hexadecimal Number to Octal 
 + * 
 + * @author Tanmay Joshi
 + *
 + */
import java.util.Scanner;

public class HexToOct
{ 
	/**
 +	 * This method converts a Hexadecimal number to
 +	 * a decimal number
 +	 * 
 +	 * @param The Hexadecimal Number
 +	 * @return The Decimal number
 +	 */ 
    public static int hex2decimal(String s)
    {
             String str = "0123456789ABCDEF";  
             s = s.toUpperCase();
             int val = 0;
             for (int i = 0; i < s.length(); i++)
             {
                 char a = s.charAt(i);
                 int n = str.indexOf(a);
                 val = 16*val + n;
             }
             return val;
    } 
	
	/**
 +	 * This method converts a Decimal number to
 +	 * a octal number
 +	 * 
 +	 * @param The Decimal Number
 +	 * @return The Octal number
 +	 */ 
	public static int decimal2octal(int q)
	{
		int now;
		int i=1;
		int octnum=0;
		while(q>0)
		{
			now=q%8;
			octnum=(now*(int)(Math.pow(10,i)))+octnum;
			q/=8;
			i++;
		}
		octnum/=10;
		return octnum;
	}
	// Main method that gets the hex input from user and converts it into octal.
    public static void main(String args[])
    {
        String hexadecnum;
        int decnum,octalnum;
        Scanner scan = new Scanner(System.in);
		
        System.out.print("Enter Hexadecimal Number : ");
        hexadecnum = scan.nextLine();      
        
        // first convert hexadecimal to decimal
        
        decnum = hex2decimal(hexadecnum);       //Pass the string to the hex2decimal function and get the decimal form in variable decnum
		
        // convert decimal to octal
        octalnum=decimal2octal(decnum);
	System.out.println("Number in octal: "+octalnum);
 
        
    }
}
